package org.example.mybooksystem.interceptor;

import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.bcel.classfile.Constant;
import org.example.mybooksystem.Modle.UserInfo;
import org.example.mybooksystem.constant.Constants;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Created with IntelliJ IDEA.
 * Description:做渐进主义的改良派,不做完没注意的速成派
 * User: XALEXC
 * Date: 2025-03-07
 * Time: 15:21
 */
@Component
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("登录拦截器校验");
        // 返回true表示放行,返回false表示拦截
        // 校验用户是否登录
       /* HttpSession session = request.getSession(false);// 在这里true表示没有session就创建session,false表示没有session就直接返回
        if(session!=null&&session.getAttribute(Constants.SESSION_USER_KEY)!=null){
            UserInfo userInfo=(UserInfo) session.getAttribute(Constants.SESSION_USER_KEY);
            if(userInfo!=null&&userInfo.getId()>=0){
                return true;
            }
        }*/
        HttpSession session = request.getSession();
        UserInfo userInfo=(UserInfo) session.getAttribute(Constants.SESSION_USER_KEY);
        if(userInfo!=null&&userInfo.getId()>=0){
            return true;
        }
        response.setStatus(401);//401 表示未认证登录
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("目标方法执行后");
    }
}
